package com.pond.pond.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;
import java.util.List;

/**
 * 订单返回对象
 */
@Getter
@Setter
public class OrderVO {
    
    /** 订单ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long id;
    
    /** 订单编号 */
    private String orderNo;
    
    /** 用户ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long userId;
    
    /** 用户姓名 */
    private String userName;
    
    /** 用户手机号 */
    private String userPhone;
    
    /** 部门ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long deptId;
    
    /** 部门名称 */
    private String deptName;
    
    /** 鱼塘ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long pondId;
    
    /** 鱼塘名称 */
    private String pondName;
    
    /** 钓位ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long seatId;
    
    /** 钓位编码 */
    private String seatCode;
    
    /** 订单类型（1-预约订单，2-直接订单） */
    private Integer orderType;
    
    /** 订单类型描述 */
    private String orderTypeDesc;
    
    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;
    
    /** 预约时间段ID */
    @JsonSerialize(using = ToStringSerializer.class)
    private Long appointmentSegmentId;
    
    /** 订单状态（0-未完成，1-已完成，2-已取消） */
    private Integer status;
    
    /** 订单状态描述 */
    private String statusDesc;
    
    /** 总金额 */
    private Double totalAmount;
    
    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;
    
    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;
    
    /** 订单项列表 */
    private List<OrderItemVO> orderItems;
    
    /**
     * 订单项返回对象
     */
    @Getter
    @Setter
    public static class OrderItemVO {
        /** 明细ID */
        @JsonSerialize(using = ToStringSerializer.class)
        private Long id;
        
        /** 订单编号 */
        private String orderNo;
        
        /** 用户姓名 */
        private String userName;
        
        /** 用户手机号 */
        private String userPhone;
        
        /** 项目类型（fee-钓费，shop-商店，return-回鱼） */
        private String itemType;
        
        /** 项目类型描述 */
        private String itemTypeDesc;
        
        /** 项目名称 */
        private String itemName;
        
        /** 消费金额 */
        private Double amount;
        
        /** 支付方式（1-微信，2-支付宝，3-现金等） */
        private Integer payType;
        
        /** 支付方式描述 */
        private String payTypeDesc;
        
        /** 支付状态（0-未支付，1-已支付） */
        private Integer payStatus;
        
        /** 支付状态描述 */
        private String payStatusDesc;
        
        /** 支付时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date payTime;
        
        /** 创建时间 */
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
        private Date createTime;
    }
}